<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 17. Решение проблем</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="appendixes.html" title="Part IV. Приложения">
<link rel="prev" href="appendixes.html" title="Part IV. Приложения">
<link rel="next" href="tips.html" title="Chapter 18. Советы">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 17. Решение проблем</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="appendixes.html">Prev</a> </td>
<th width="60%" align="center">Part IV. Приложения</th>
<td width="20%" align="right"> <a accesskey="n" href="tips.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="chapter" title="Chapter 17. Решение проблем">
<div class="titlepage"><div><div><h2 class="title">
<a name="troubleshooting"></a>Chapter 17. Решение проблем</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl><dt><span class="sect1"><a href="troubleshooting.html#smarty.php.errors">Ошибки Smarty/PHP</a></span></dt></dl>
</div>
<p></p>
<div class="sect1" title="Ошибки Smarty/PHP">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="smarty.php.errors"></a>Ошибки Smarty/PHP</h2></div></div></div>
<p>
   Smarty может ловить многие ошибки, например отсутствующие атрибуты
   тэгов или недопустимые имена переменных. Если это произойдет, вы увидите
   ошибку наподобие следующей:
  </p>
<div class="example">
<a name="id2744688"></a><p class="title"><b>Example 17.1. Ошибка Smarty</b></p>
<div class="example-contents"><pre class="screen">

Warning: Smarty: [in index.tpl line 4]: syntax error: unknown tag - '%blah'
       in /path/to/smarty/Smarty.class.php on line 1041

Fatal error: Smarty: [in index.tpl line 28]: syntax error: missing section name
       in /path/to/smarty/Smarty.class.php on line 1041

   </pre></div>
</div>
<br class="example-break"><p>
   Smarty покажет вам имя шаблона, номер строки и ошибку.
   Далее сообщение об ошибке состоит из фактического номера строки в классе
   Smarty, где возникла ошибка.
  </p>
<p>
   Есть определенные ошибки, которые не может поймать Smarty, например
   отсутствующие закрывающие тэги. Такие ошибки обычно приводят к ошибкам
   разбора PHP на этапе компиляции.
  </p>
<div class="example">
<a name="id2744775"></a><p class="title"><b>Example 17.2. Ошибки разбора PHP</b></p>
<div class="example-contents"><pre class="screen">

Parse error: parse error in /path/to/smarty/templates_c/index.tpl.php on line 75

   </pre></div>
</div>
<br class="example-break"><p>
   Когда вы встречаетесь с ошибкой разбора PHP, номер строки, в которой
   допущена ошибка, будет соответствовать скомпилированному PHP-скрипту,
   а НЕ самому шаблону. Обычно вы можете посмотреть на шаблон и увидить
   синтаксическую ошибку. Типичные ошибки: отсутствующие закрывающие тэги
   для
   <a class="link" href="language.function.if.html" title="{if},{elseif},{else}"><code class="varname">{if}{/if}</code></a> или
   <a class="link" href="language.function.if.html" title="{if},{elseif},{else}">
   <code class="varname">{section}{/section}</code></a>,
   или синтаксис логики внутри тэга <code class="varname">{if}</code>.
   Если вы не можете найти ошибку, вам может понадобиться открыть
   скомпилированный PHP-файл и перейти к номеру строки чтобы выяснить,
   в чём заключается ошибка в шаблоне.
  </p>
<div class="example">
<a name="id2744828"></a><p class="title"><b>Example 17.3. Другие частые ошибки</b></p>
<div class="example-contents">
<pre class="screen">

Warning: Smarty error: unable to read resource: "index.tpl" in...
or
Warning: Smarty error: unable to read resource: "site.conf" in...

   </pre>
<p>
    </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem"><p>
       Значение <a class="link" href="api.variables.html#variable.template.dir" title="$template_dir">
       <em class="parameter"><code>$template_dir</code></em></a>
       неверно, эта директория не существует или файл
       <code class="filename">index.tpl</code> не найден в директории
       <code class="filename">templates/</code>.
      </p></li>
<li class="listitem"><p>
       В шаблоне присутствует функция <a class="link" href="language.function.config.load.html" title="{config_load}">
       <code class="varname">{config_load}</code></a>
       (либо была вызвана функция
       <a class="link" href="api.config.load.html" title="config_load()">
       <code class="varname">config_load()</code></a>)
       и значение
       <a class="link" href="variable.config.dir.html" title="$config_dir">
       <em class="parameter"><code>$config_dir</code></em></a>
       неверно, эта директория не существует или файл
       <code class="filename">site.conf</code> находится за пределами этой
       директории.
      </p></li>
</ul></div>
<p>
   </p>
<pre class="screen">

Fatal error: Smarty error: the $compile_dir 'templates_c' does not exist,
or is not a directory...

   </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
      Переменная
      <a class="link" href="variable.compile.dir.html" title="$compile_dir">
      <em class="parameter"><code>$compile_dir</code></em></a>
      установлена неверно, эта директория не существует
      или <code class="filename">templates_c</code> является файлом, а не
      директорией.
     </p></li></ul></div>
<pre class="screen">

Fatal error: Smarty error: unable to write to $compile_dir '....

   </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
      У веб сервера нет прав на запись в директорию
      <a class="link" href="variable.compile.dir.html" title="$compile_dir">
      <em class="parameter"><code>$compile_dir</code></em></a>.
      Смотрите конец страницы
      <a class="link" href="installing.smarty.basic.html" title="Базовая установка">Базовая установка</a>
      для получения информации о правах доступа.
     </p></li></ul></div>
<pre class="screen">

Fatal error: Smarty error: the $cache_dir 'cache' does not exist,
or is not a directory. in /..

   </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
      Это означает, что параметр
      <a class="link" href="variable.caching.html" title="$caching">
      <em class="parameter"><code>$caching</code></em></a> включен, но параметр
      <a class="link" href="variable.cache.dir.html" title="$cache_dir">
      <em class="parameter"><code>$cache_dir</code></em></a>
      установлен неправильно, эта директория не существует
      или <code class="filename">cache/</code> является файлом, а не
      директорией.
     </p></li></ul></div>
<pre class="screen">

Fatal error: Smarty error: unable to write to $cache_dir '/...

   </pre>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
      Это означает, что параметр 
      <a class="link" href="variable.caching.html" title="$caching">
      <em class="parameter"><code>$caching</code></em></a> включен, но
      у веб сервера нет прав на запись в директорию
      <a class="link" href="variable.cache.dir.html" title="$cache_dir">
      <em class="parameter"><code>$cache_dir</code></em></a>.
      Смотрите конец страницы
      <a class="link" href="installing.smarty.basic.html" title="Базовая установка">Базовая установка</a>
      для получения информации о правах доступа.
     </p></li></ul></div>
</div>
</div>
<br class="example-break"><p>
   См. также
   <a class="link" href="chapter.debugging.console.html" title="Chapter 10. Отладочная консоль">Отладочная консоль</a>,
   <a class="link" href="variable.error.reporting.html" title="$error_reporting">
   <em class="parameter"><code>$error_reporting</code></em></a> и
   <a class="link" href="api.trigger.error.html" title="trigger_error"><code class="varname">trigger_error()</code></a>.
  </p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="appendixes.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="appendixes.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="tips.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Part IV. Приложения </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> Chapter 18. Советы</td>
</tr>
</table>
</div>
</body>
</html>
